# -*- coding: utf-8 -*-#
#-------------------------------------------------------------------------------
# 建立者:        Young  
# Name:         demo12.06
# Description:
# Author:       $赵怡蕾
# Date:         2019/3/18
#-------------------------------------------------------------------------------

# 创建一个有10个元素值的集合
set1 = set(range(10))
# 输出set1的类型，运行结果：<class 'set'>
print(type(set1))
# 运行结果：{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
print(set1)
# 将字符串中的每一个字符作为元素添加进集合，因为字符串可看作字符的列表
# 会去除重复的字符，而且顺序会打乱

# 互异性 无序性
set2 = set('hello')
# 运行结果：{'h', 'o', 'l', 'e'}
print(set2)
# 利用字符串列表建立集合，会去除重复的字符串，字符串的顺序会打乱
set3 = set(['Bill','John','Mike','John'])
# 运行结果：{'Bill', 'Mike', 'John'}
print(set3)
# 利用元组建立一个集合
a = set((1,2,3))
# 利用列表建立一个集合
b = set([3,5,1,7])
# 使用union方法合并a集合和b集合，运行结果：{1, 2, 3, 5, 7}
print(a.union(b))
# 使用"|"运算符合并a集合和b集合，运行结果：{1, 2, 3, 5, 7}
print(a|b)
# 使用intersection方法求a集合和b集合的交集，运行结果：{1, 3}
print(a.intersection(b))
# 使用“&”运算符求a集合和b集合的交集，运行结果：{1, 3}
print(a & b)
# 使用列表创建一个集合
c = set([2,3])
# 判断c集合是否为a集合的子集，运行结果：True
print(c.issubset(a))
# 判断a集合是否为c集合的子集，运行结果：False
print(a.issubset(c))
# 判断c集合是否为a集合的超集，运行结果：False
print(c.issuperset(a))
# 判断a集合是否为c集合的超集，运行结果：True
print(a.issuperset(c))
# 使用列表创建一个集合
d = set([1,2,3])
# 判断a集合和d集合是否相等，运行结果：True
print(a == d)
# 使用difference方法计算a集合b集合的差，a和b的差值就是在a中删除在b中存在的元素
# 运行结果：{2}
print(a.difference(b))
# 使用“-”运算符计算a集合和b集合的差，运行结果：{2}
print(a - b)
# 使用symmetric_difference方法计算a集合和b集合的对称差，运行结果：{2, 5, 7}
print(a.symmetric_difference(b))
# 对称差相当于a - b和b - a的并集，运行结果：{2, 5, 7}
print((a - b)|(b - a))
# 使用copy方法将a复制一份，并将该副本赋给变量x
x = a.copy()
# 判断a与x是否相同，运行结果：False
print(x is a)
# 向集合x添加一个新的元素
x.add(30)
# 运行结果：{1, 2, 3, 30}
print(x)
# 运行结果：{1, 2, 3}
print(a)
# 运行结果：{1, 2, 3}
print(d)
# 判断1是否属于集合d，运行结果：True
print(1 in d)
# 判断10是否属于集合d，运行结果：False
print(10 in d)